package com.example.xd.model_video.videoeditlib.editVideoPlay;

import android.graphics.Bitmap;
import android.media.MediaMetadataRetriever;
import android.media.MediaPlayer;

import java.io.IOException;

/**
 * Created by 半米阳光 on 2017/8/28.
 */

public class VideoFrameUtil {
    public static Bitmap getVideoFirstFrame(String filePath){
        MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever();
        mediaMetadataRetriever.setDataSource(filePath);
        return mediaMetadataRetriever.getFrameAtTime();
    }
    /**
     *
     * @param filePath 视频文件地址
     * @return 若该视频文件发生错误无法提取帧，则返回-1
     */
    public static int getVideoWidth(String filePath){
        Bitmap bitmap = getVideoFirstFrame(filePath);
        return bitmap != null ? bitmap.getWidth() : -1;
    }

    /**
     *
     * @param filePath 视频文件地址
     * @return 若该视频文件发生错误无法提取帧，则返回-1
     */
    public static int getVideoHeight(String filePath){
        Bitmap bitmap = getVideoFirstFrame(filePath);
        return bitmap != null ? bitmap.getHeight() : -1;
    }

    public static int getVideoLength(String filePath){
        /** 该方法无法获取利用ffmpeg由图片生成的视频文件的长度，一直为0 */
        /*MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever();
        mediaMetadataRetriever.setDataSource(filePath);
        String duration = mediaMetadataRetriever.extractMetadata(android.media.MediaMetadataRetriever.METADATA_KEY_DURATION);
        return Integer.valueOf(duration) / 1000;//返回单位是秒*/

        MediaPlayer mediaPlayer = new MediaPlayer();
        int duration = 0;
        try {
            mediaPlayer.setDataSource(filePath);
            mediaPlayer.prepare();
            duration = mediaPlayer.getDuration();
        }catch (IOException e){
            e.printStackTrace();
        }
        return duration == 0 ? 2 : duration;
    }
}
